home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 19.zip / BS1 part 19 / Lattice C disk 4.adf / Compiler_Headers / dos.h < prev    next >
C/C++ Source or Header  |  1988-11-07  |  5KB  |  204 lines

  1. #ifndef MELT2SIZE
  2. #include "exec/types.h"
  3. #include "exec/ports.h"
  4. #include "exec/lists.h"
  5. #include "libraries/dos.h"
  6. /**
  7. *
  8. * This header file supplies information needed to interface with the
  9. * particular operating system and C compiler being used.
  10. *
  11. **/
  12.  
  13. /**
  14. *
  15. * The following definitions specify the particular C compiler being used.
  16. *
  17. *    LATTICE        Lattice C compiler
  18. *
  19. */
  20. #define LATTICE 1
  21. #define LATTICE_V4 1
  22. #define LATTICE_V5 1
  23. /**
  24. *
  25. * The following type definitions take care of the particularly nasty
  26. * machine dependency caused by the unspecified handling of sign extension
  27. * in the C language.  When converting "char" to "int" some compilers
  28. * will extend the sign, while others will not.  Both are correct, and
  29. * the unsuspecting programmer is the loser.  For situations where it
  30. * matters, the new type "byte" is equivalent to "unsigned char".
  31. *
  32. */
  33. typedef unsigned char byte;
  34.  
  35.  
  36. /**
  37. *
  38. * Miscellaneous definitions
  39. *
  40. */
  41. #define SECSIZ 512        /* disk sector size */
  42.  
  43. /**
  44. *
  45. * The following symbols define the sizes of file names and node names.
  46. *
  47. */
  48. #define FNSIZE 108    /* maximum file node size      - DOS limit */
  49. #define FMSIZE 256    /* maximum file name size      - DOS limit */
  50. #define FESIZE 32    /* maximum file extension size - arbitrary */
  51.  
  52. /**
  53. *
  54. * This structure contains disk size information returned by the getdfs
  55. * function.
  56. */
  57. #define DISKINFO InfoData
  58.  
  59. /**
  60. *
  61. * The following structure is used by the dfind and dnext functions to
  62. * hold file information.
  63. *
  64. */
  65. #define FILEINFO FileInfoBlock
  66.  
  67. /**
  68. *
  69. * The following structure appears at the beginning (low address) of
  70. * each free memory block.
  71. *
  72. */
  73. struct MELT
  74.     {
  75.     struct MELT *fwd;    /* points to next free block */
  76.     long size;        /* number of MELTs in this block */
  77.     };
  78. #define MELTSIZE sizeof(struct MELT)
  79.  
  80. /**
  81. *
  82. * The following structure is used to keep track of currently allocated
  83. * system memory
  84. *
  85. */
  86. struct MELT2
  87.     {
  88.     struct MELT2 *fwd;    /* points to next block */
  89.     struct MELT2 *bwd;    /* points to previous block */
  90.     unsigned size;        /* size of this block */
  91.     };
  92. #define MELT2SIZE sizeof(struct MELT2)
  93.  
  94. /**
  95. *
  96. * The following structures are used with the AmigaDOS fork() and wait()
  97. * functions
  98. *
  99. */
  100.  
  101. struct ProcID {                /* packet returned from fork()  */
  102.     struct ProcID *nextID;        /* link to next packet        */
  103.     struct Process *process;    /* process ID of child        */
  104.     int UserPortFlag;
  105.     struct MsgPort *parent;        /* termination msg destination    */
  106.     struct MsgPort *child;        /* child process' task msg port    */
  107.     BPTR seglist;            /* child process' segment list    */
  108.     };
  109.  
  110. struct FORKENV {
  111.     long priority;            /* new process priority        */
  112.     long stack;            /* stack size for new process    */
  113.     BPTR std_in;            /* stdin for new process    */
  114.     BPTR std_out;            /* stdout for new process    */
  115.     BPTR console;            /* console window for new process */
  116.     struct MsgPort *msgport;    /* msg port to receive termination */
  117.     };                /* message from child        */
  118.  
  119. struct TermMsg {            /* termination message from child */
  120.     struct Message msg;
  121.     long class;            /* class == 0            */
  122.     short type;            /* message type == 0        */
  123.     struct Process *process;    /* process ID of sending task    */
  124.     long ret;            /* return value            */
  125.     };
  126.  
  127. #ifndef __ARGS
  128. #ifdef NARGS
  129. #define __ARGS(a) ()
  130. #else
  131. #define __ARGS(a) a
  132. #endif
  133. #endif
  134.  
  135. extern int forkl __ARGS((char *, char *,...));
  136. extern int forkv __ARGS((char *, char **, struct FORKENV *, struct ProcID *));
  137. extern int wait __ARGS((struct ProcID *));
  138. extern struct ProcID *waitm __ARGS((struct ProcID **));
  139.  
  140. /**
  141. *
  142. * Level 0 I/O services
  143. *
  144. **/
  145. extern int _dclose __ARGS((long));
  146. extern long _dcreat __ARGS((char *, int));
  147. extern long _dcreatx __ARGS((char *, int));
  148. extern int dfind __ARGS((struct FILEINFO *, char *, int));
  149. extern int dnext __ARGS((struct FILEINFO *));
  150. extern long _dopen __ARGS((char *, int));
  151. extern unsigned _dread __ARGS((long, char *, unsigned));
  152. extern long _dseek __ARGS((long, long, int));
  153. extern unsigned _dwrite __ARGS((long, char *, unsigned));
  154. extern int getcd __ARGS((int,char *));
  155. extern int getdfs __ARGS((char *, struct DISKINFO *));
  156. extern int getfa __ARGS((char *));
  157. extern long getft __ARGS((char *));
  158. extern int getpath __ARGS((BPTR, char *));
  159. extern BPTR findpath __ARGS((char *));
  160. /**
  161. *
  162. * Miscellaneous external definitions
  163. *
  164. */
  165. extern int datecmp __ARGS((long[], long[]));
  166. extern int chgclk __ARGS((unsigned char *));
  167. extern void getclk __ARGS((unsigned char *));
  168. extern int onbreak __ARGS((int __ARGS((*)) __ARGS(())));
  169. extern int poserr __ARGS((char *));
  170. extern int chkabort __ARGS((void));
  171. extern int Chk_Abort __ARGS((void));
  172. struct DeviceList *getasn __ARGS((char *));
  173.  
  174. #define geta4 __builtin_geta4
  175. extern void geta4 __ARGS((void));
  176.  
  177. #define getreg __builtin_getreg
  178. extern long getreg __ARGS((int));
  179.  
  180. #define putreg __builtin_putreg
  181. extern void putreg __ARGS((int, long));
  182.  
  183. #define __emit __builtin_emit
  184. extern void __emit __ARGS((int));
  185.  
  186. #define REG_D0 0
  187. #define REG_D1 1
  188. #define REG_D2 2
  189. #define REG_D3 3
  190. #define REG_D4 4
  191. #define REG_D5 5
  192. #define REG_D6 6
  193. #define REG_D7 7
  194. #define REG_A0 8
  195. #define REG_A1 9
  196. #define REG_A2 10
  197. #define REG_A3 11
  198. #define REG_A4 12
  199. #define REG_A5 13
  200. #define REG_A6 14
  201. #define REG_A7 15
  202.  
  203. #endif
  204.